// using AppFiniteStateMachine;
// using UnityEngine;
// using System;
//
// namespace AppSoldierState
// {
//     public enum SoldierStateEnum
//     {
//         Init,
//         Stop,
//         Run,
//         Walk,
//         Chase,
//         Death
//     }
//
//     
//     [Serializable]
//     public class SoldierParams
//     {
//         public int attack = 3;
//         public int health = 2;
//         public string name = "Soldier_1";
//
//         public GameObject soldier_obj;
//     }
//
//     
//     public class SoldierStateManager : MonoBehaviour
//     {
//         public FiniteStateMachineBase fsm;
//         public SoldierParams parameter;
//
//         private void Awake()
//         {
//             fsm = new FiniteStateMachineBase(SoldierStateEnum.Init);
//             
//             // --- 这里初始化`state_dc`
//             fsm.state_dc.Add(SoldierStateEnum.Init.ToString(), new SoldierInitState(this));
//         }
//
//         void Start()
//         {
//             fsm.Start();
//         }
//
//         void Update()
//         {
//             fsm.Update();
//         }
//
//         public void TransitionState(object type)
//         {
//             fsm.TransitionState(type);
//         }
//     }
//     
//     
//     public class SoldierInitState : IState
//     {
//         private SoldierStateManager manager;
//         private SoldierParams parameter;
//
//         private float duration_time = 0f;
//         private float transition_time = 3f;
//         
//         public SoldierInitState(SoldierStateManager manager)
//         {
//             this.manager = manager;
//             this.parameter = manager.parameter;
//         }
//         
//         public void OnEnter()
//         {
//             duration_time = 0f;
//             
//             BdUtils.log($"--- {GetType().Name}.OnEnter");
//         }
//
//         public void OnUpdate()
//         {
//             duration_time += Time.deltaTime;
//             if (duration_time > transition_time)
//                 manager.TransitionState(SoldierStateEnum.Walk);
//         }
//
//         public void OnExit()
//         {
//             BdUtils.log($"--- {GetType().Name}.OnExit");
//         }
//     }
// }